# Ввести вещественное число двойной точности A и целое неотрицательное N: -2^30 ⩽ A * 10^N ⩽ 2^30 . Округлить A до N-го знака после запятой путём отбрасывания лишних цифр
# и незначащих нулей (при выводе может возникнуть ***.0)
#  Алгоритм округления: домножить на 10^N, перевести в целое с округлением RTZ, затем обратно, а затем поделить на 10^N .
#  Округление оформить в виде подпрограммы, которой в a0 подаётся количество знаков после запятой, а в fa0 — число, после чего в fa0 возвращается округление. 


.text
Begin:
        li	a7,  7
	ecall
        li	a7,  5
	ecall
        bgez	a0,  .notneg
	neg	a0,  a0
.notneg:
	jal	Round
        li      a7,  3			# Выведем результат
        ecall
.exit:  li      a7, 10
        ecall

	
Round:	
	addi    sp,  sp, -4
        sw      ra,  (sp)
        fmv.d	ft0, fa0		# Число A
	mv	t0,  a0			# Число N	
	li 	t1,  1			# 10^N	    	
	beqz	t0,  .nzero
	li 	t3,  10
.loopn:	addi	t0,  t0, -1
	mul	t1,  t1, t3
	beqz	t0,  .nzero
	b	.loopn
.nzero: fcvt.d.w ft1, t1
	fmul.d	ft0, ft0, ft1		# A * 10^N
	fcvt.w.d t0, ft0, rtz
	fcvt.d.w ft0, t0
	fdiv.d	fa0, ft0, ft1
	lw      ra, (sp)
        addi    sp, sp, 4
	ret
